package mia.recommender.ch02;

import java.io.File;
import java.util.List;

import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Spinner;

public class formPropuesta {
	private Text txtTituloProyecto;
	private Text txtPalClave;
	private Text txtObjGeneral;
	private Text txtObjEspecifico;
	private Text txtMarcoTeori;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			formPropuesta window = new formPropuesta();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		Shell shlFormularioPropuestaDe = new Shell();
		shlFormularioPropuestaDe.setSize(572, 537);
		shlFormularioPropuestaDe.setText("Formulario propuesta de investigación");
		
		Button btnGuardar = new Button(shlFormularioPropuestaDe, SWT.NONE);
		btnGuardar.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent arg0) {
			
				try {
					

					String args[] ;
					args = new String[0];

					  File modelFile = null;

					if (args.length > 0)
						  modelFile = new File(args[0]);
					  if(modelFile == null || !modelFile.exists())
						  modelFile = new File("intro.csv");
					  if(!modelFile.exists()) {
						  System.err.println("Please, specify name of file, or put file 'input.csv' into current directory!");
						  System.exit(1);
					  }
					  DataModel model = new FileDataModel(modelFile);

				    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
				    UserNeighborhood neighborhood =
				      new NearestNUserNeighborhood(2, similarity, model);

				    Recommender recommender = new GenericUserBasedRecommender(
				        model, neighborhood, similarity);

				    List<RecommendedItem> recommendations =
				        recommender.recommend(1, 1);

				    for (RecommendedItem recommendation : recommendations) {
				      System.out.println(recommendation);
				    }

				  
					
				} catch (Exception e) {
					// TODO: handle exception
				}
				
				
				
			}
		});
		btnGuardar.setBounds(229, 432, 75, 25);
		btnGuardar.setText("Guardar");
		
		Label lblFormulario = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblFormulario.setBounds(166, 24, 177, 15);
		lblFormulario.setText("PROPUESTA DE INVESTIGACIÓN");
		
		Label lblTitulo = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblTitulo.setBounds(40, 75, 108, 15);
		lblTitulo.setText("Titulo del proyecto:");
		
		Label lblPalabraClave = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblPalabraClave.setBounds(40, 114, 84, 15);
		lblPalabraClave.setText("Palabras Clave:");
		
		Label lblObjGeneral = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblObjGeneral.setBounds(40, 163, 108, 15);
		lblObjGeneral.setText("Objetivo General:");
		
		Label lblObjEspecifico = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblObjEspecifico.setBounds(40, 251, 108, 15);
		lblObjEspecifico.setText("Objetivo Especifico:");
		
		Label lblMarcoTeori = new Label(shlFormularioPropuestaDe, SWT.NONE);
		lblMarcoTeori.setBounds(28, 343, 108, 15);
		lblMarcoTeori.setText("Marco Teorico:");
		
		txtTituloProyecto = new Text(shlFormularioPropuestaDe, SWT.BORDER);
		txtTituloProyecto.setBounds(181, 69, 301, 21);
		
		txtPalClave = new Text(shlFormularioPropuestaDe, SWT.BORDER);
		txtPalClave.setBounds(181, 108, 301, 21);
		
		txtObjGeneral = new Text(shlFormularioPropuestaDe, SWT.BORDER | SWT.WRAP | SWT.MULTI);
		txtObjGeneral.setBounds(181, 157, 301, 63);
		
		txtObjEspecifico = new Text(shlFormularioPropuestaDe, SWT.BORDER | SWT.WRAP | SWT.MULTI);
		txtObjEspecifico.setBounds(181, 248, 301, 63);
		
		txtMarcoTeori = new Text(shlFormularioPropuestaDe, SWT.BORDER | SWT.WRAP | SWT.MULTI);
		txtMarcoTeori.setBounds(181, 343, 301, 63);

		shlFormularioPropuestaDe.open();
		shlFormularioPropuestaDe.layout();
		while (!shlFormularioPropuestaDe.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}
}
